package com.yuandian.business.monitor.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.business_monitor.po.QueryRetStatisInfoParams;
import com.yuandian.api.business_monitor.po.SegmentOverviewParams;
import com.yuandian.api.business_monitor.vo.*;
import com.yuandian.po.BaseSearch;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 说明：网端总览mapper
 *
 * @Author yanjun
 * @Date 2020/10/12 15:22
 */
@Mapper
public interface SegmentOverviewMapper {

    /**
     * 查询网端总览路径图
     *
     * @param params 网端总览查询对象
     * @return 通用返回对象
     */
    List<SegmentIndicatorTrendVo> querySegmentOverviewRoad(@Param("params") SegmentOverviewParams params);

    /**
     * 查询网端指标趋势(当前值)
     *
     * @param params 网端总览查询对象
     * @return 通用返回对象
     */
    List<SegmentIndicatorTrendVo> querySegmentIndicatorTrend(@Param("params") SegmentOverviewParams params);

    /**
     *
     *
     * @param params 网端请求量趋势
     * @return 通用返回对象
     */
    List<RequestTrendVo> querySegmentReqTrend(@Param("params") SegmentOverviewParams params, @Param("days") Integer days);

    /**
     * 查询网端指标趋势数据(前七天最大值、最小值、昨天值)
     *
     * @param params
     * @return
     */
    List<IndicatorHistoryVo> querySegmentIndicatorTrendHis(@Param("params") SegmentOverviewParams params,
														   @Param("timeInterval") int timeInterval);

    /**
     * 查询返回码统计信息
     *
     * @param params 查询返回码统计信息参数
     * @return 返回码统计信息vo对象集合
     */
    List<RetStatisInfoVo> queryRetStatisInfo(@Param("params") QueryRetStatisInfoParams params);


    /**
     * 查询网端数据总览
     *
     * @param params 分页参数
     * @return 网端数据返回集合
     */
    IPage<SegmentOverviewVo> querySegmentDataOverview(@Param("page") Page<SegmentOverviewVo> page, @Param("params") SegmentOverviewParams params);

	/**
	 * 查询峰值
	 * @param params	参数对象
	 * @param scale		刻度值
	 * @param scaleType	刻度类型
	 * @param baseSearch	时间区间
	 * @return	结果集
	 */
	BusinessAvgAndPeakVo queryPeakValue(@Param("params") SegmentOverviewParams params,
										@Param("scale") int scale,
										@Param("scaleType") String scaleType,
										@Param("peakType") String peakType,
										@Param("baseSearch") BaseSearch baseSearch);

    List<NetworkElementTrend> queryNetworkTrend(@Param("params") SegmentOverviewParams params);
}
